<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="format-detection" content="telephone=no"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><link rel="icon" href="/images/icons/IMG_1680(20230123-175413).JPG?v=2.8.0" type="image/png" sizes="16x16"><link rel="icon" href="/images/icons/IMG_1680(20230123-175413).JPG?v=2.8.0" type="image/png" sizes="32x32"><meta name="description" content="小呆的成长博客">
<meta property="og:type" content="website">
<meta property="og:title" content="码农呆的奋斗史">
<meta property="og:url" content="http://shuaidaia.gitee.io/index.html">
<meta property="og:site_name" content="码农呆的奋斗史">
<meta property="og:description" content="小呆的成长博客">
<meta property="og:locale" content="zh_CN">
<meta property="article:author" content="Belly	|	vx：lin128Ve98">
<meta name="twitter:card" content="summary"><title>码农呆的奋斗史</title><link ref="canonical" href="http://shuaidaia.gitee.io/index.html"><link rel="dns-prefetch" href="https://cdn.jsdelivr.net"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.12.1/css/all.min.css" type="text/css"><link rel="stylesheet" href="/css/index.css?v=2.8.0"><link rel="stylesheet" href="css/custom.css"><script>var Stun = window.Stun || {};
var CONFIG = {
  root: '/',
  algolia: undefined,
  assistSearch: undefined,
  fontIcon: {"prompt":{"success":"fas fa-check-circle","info":"fas fa-arrow-circle-right","warning":"fas fa-exclamation-circle","error":"fas fa-times-circle"},"copyBtn":"fas fa-copy"},
  sidebar: {"offsetTop":"20px","tocMaxDepth":6},
  header: {"enable":true,"showOnPost":true,"scrollDownIcon":false},
  postWidget: {"endText":true},
  nightMode: {"enable":true},
  back2top: {"enable":true},
  codeblock: {"style":"default","highlight":"light","wordWrap":false},
  reward: false,
  fancybox: false,
  zoomImage: {"gapAside":"20px"},
  galleryWaterfall: undefined,
  lazyload: false,
  pjax: undefined,
  externalLink: {"icon":{"enable":true,"name":"fas fa-external-link-alt"}},
  shortcuts: undefined,
  prompt: {"copyButton":"复制","copySuccess":"复制成功","copyError":"复制失败"},
  sourcePath: {"js":"js","css":"css","images":"images"},
};

window.CONFIG = CONFIG;</script><meta name="generator" content="Hexo 6.3.0"></head><body><div class="container" id="container"><header class="header" id="header"><div class="header-inner"><nav class="header-nav header-nav--fixed"><div class="header-nav-inner"><div class="header-nav-menubtn"><i class="fas fa-bars"></i></div><div class="header-nav-menu"><div class="header-nav-menu-item"><a class="header-nav-menu-item__link" href="/"><span class="header-nav-menu-item__icon"><i class="fas fa-home"></i></span><span class="header-nav-menu-item__text">首页</span></a></div><div class="header-nav-menu-item"><a class="header-nav-menu-item__link" href="/archives/"><span class="header-nav-menu-item__icon"><i class="fas fa-folder-open"></i></span><span class="header-nav-menu-item__text">归档</span></a></div><div class="header-nav-menu-item"><a class="header-nav-menu-item__link" href="/categories/"><span class="header-nav-menu-item__icon"><i class="fas fa-layer-group"></i></span><span class="header-nav-menu-item__text">分类</span></a></div><div class="header-nav-menu-item"><a class="header-nav-menu-item__link" href="/tags/"><span class="header-nav-menu-item__icon"><i class="fas fa-tags"></i></span><span class="header-nav-menu-item__text">标签</span></a></div></div><div class="header-nav-mode"><div class="mode"><div class="mode-track"><span class="mode-track-moon"></span><span class="mode-track-sun"></span></div><div class="mode-thumb"></div></div></div></div></nav><div class="header-banner"><div class="header-banner-info"><div class="header-banner-info__subtitle">总有人间一两风，填我十万八千梦。</div></div></div></div></header><main class="main" id="main"><div class="main-inner"><div class="content-wrap" id="content-wrap"><div class="content content-home" id="content"><section class="postlist"><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2024/04/03/HTTP%E5%93%8D%E5%BA%94%E7%8A%B6%E6%80%81%E7%A0%81/">HTTP响应状态码大全及介绍</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2024-04-03</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2024-04-03</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h3 id="常见的HTTP状态码："   >
          <a href="#常见的HTTP状态码：" class="heading-link"><i class="fas fa-link"></i></a><a href="#常见的HTTP状态码：" class="headerlink" title="常见的HTTP状态码："></a>常见的HTTP状态码：</h3>
      
        <h5 id="200-请求成功"   >
          <a href="#200-请求成功" class="heading-link"><i class="fas fa-link"></i></a><a href="#200-请求成功" class="headerlink" title="200 - 请求成功"></a>200 - 请求成功</h5>
      
        <h5 id="301-资源（网页等）被永久转移到其它URL"   >
          <a href="#301-资源（网页等）被永久转移到其它URL" class="heading-link"><i class="fas fa-link"></i></a><a href="#301-资源（网页等）被永久转移到其它URL" class="headerlink" title="301 - 资源（网页等）被永久转移到其它URL"></a>301 - 资源（网页等）被永久转移到其它URL</h5>
      
        <h5 id="404-请求的资源（网页等）不存在"   >
          <a href="#404-请求的资源（网页等）不存在" class="heading-link"><i class="fas fa-link"></i></a><a href="#404-请求的资源（网页等）不存在" class="headerlink" title="404 - 请求的资源（网页等）不存在"></a>404 - 请求的资源（网页等）不存在</h5>
      
        <h5 id="500-内部服务器错误"   >
          <a href="#500-内部服务器错误" class="heading-link"><i class="fas fa-link"></i></a><a href="#500-内部服务器错误" class="headerlink" title="500 - 内部服务器错误"></a>500 - 内部服务器错误</h5>
      <hr>

        <h3 id="HTTP状态码分类："   >
          <a href="#HTTP状态码分类：" class="heading-link"><i class="fas fa-link"></i></a><a href="#HTTP状态码分类：" class="headerlink" title="HTTP状态码分类："></a>HTTP状态码分类：</h3>
      
        <h5 id="说明：HTTP状态码由三个十进制数字组成，第一个十进制数字定义了状态码的类型，后两个数字没有分类的作用。"   >
          <a href="#说明：HTTP状态码由三个十进制数字组成，第一个十进制数字定义了状态码的类型，后两个数字没有分类的作用。" class="heading-link"><i class="fas fa-link"></i></a><a href="#说明：HTTP状态码由三个十进制数字组成，第一个十进制数字定义了状态码的类型，后两个数字没有分类的作用。" class="headerlink" title="说明：HTTP状态码由三个十进制数字组成，第一个十进制数字定义了状态码的类型，后两个数字没有分类的作用。"></a>说明：HTTP状态码由三个十进制数字组成，第一个十进制数字定义了状态码的类型，后两个数字没有分类的作用。</h5>
      
        <h4 id="HTTP状态码共分为5种类型："   >
          <a href="#HTTP状态码共分为5种类型：" class="heading-link"><i class="fas fa-link"></i></a><a href="#HTTP状态码共分为5种类型：" class="headerlink" title="HTTP状态码共分为5种类型："></a>HTTP状态码共分为5种类型：</h4>
      
        <h5 id="1-–-信息，服务器收到请求，需要请求者继续执行操作"   >
          <a href="#1-–-信息，服务器收到请求，需要请求者继续执行操作" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-–-信息，服务器收到请求，需要请求者继续执行操作" class="headerlink" title="1**   – 信息，服务器收到请求，需要请求者继续执行操作"></a>1**   – 信息，服务器收到请求，需要请求者继续执行操作</h5>
      
        <h5 id="2-–-成功，操作被成功接收并处理"   >
          <a href="#2-–-成功，操作被成功接收并处理" class="heading-link"><i class="fas fa-link"></i></a><a href="#2-–-成功，操作被成功接收并处理" class="headerlink" title="2**   – 成功，操作被成功接收并处理"></a>2**   – 成功，操作被成功接收并处理</h5>
      
        <h5 id="3-–-重定向，需要进一步的操作以完成请求"   >
          <a href="#3-–-重定向，需要进一步的操作以完成请求" class="heading-link"><i class="fas fa-link"></i></a><a href="#3-–-重定向，需要进一步的操作以完成请求" class="headerlink" title="3**   – 重定向，需要进一步的操作以完成请求"></a>3**   – 重定向，需要进一步的操作以完成请求</h5>
      
        <h5 id="4-–-客户端错误，请求包含语法错误或无法完成请求"   >
          <a href="#4-–-客户端错误，请求包含语法错误或无法完成请求" class="heading-link"><i class="fas fa-link"></i></a><a href="#4-–-客户端错误，请求包含语法错误或无法完成请求" class="headerlink" title="4**   – 客户端错误，请求包含语法错误或无法完成请求"></a>4**   – 客户端错误，请求包含语法错误或无法完成请求</h5>
      
        <h5 id="5-–-服务器错误，服务器在处理请求的过程中发生了错误"   >
          <a href="#5-–-服务器错误，服务器在处理请求的过程中发生了错误" class="heading-link"><i class="fas fa-link"></i></a><a href="#5-–-服务器错误，服务器在处理请求的过程中发生了错误" class="headerlink" title="5**   – 服务器错误，服务器在处理请求的过程中发生了错误"></a>5**   – 服务器错误，服务器在处理请求的过程中发生了错误</h5>
      <hr>

        <h3 id="HTTP状态码列表："   >
          <a href="#HTTP状态码列表：" class="heading-link"><i class="fas fa-link"></i></a><a href="#HTTP状态码列表：" class="headerlink" title="HTTP状态码列表："></a>HTTP状态码列表：</h3>
      <div class="table-container"><table>
<thead>
<tr>
<th align="center">–HTTP状态码–</th>
<th align="center">–状态码名称–</th>
<th align="left">描述说明</th>
</tr>
</thead>
<tbody><tr>
<td align="center"><strong><a href="#http100">100</a></strong></td>
<td align="center"><strong>Continue</strong></td>
<td align="left"><strong>继续。客户端应继续其请求</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http101">101</a></strong></td>
<td align="center"><strong>Switching Protocols</strong></td>
<td align="left"><strong>切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议，例如，切换到 HTTP 的新版本协议</strong></td>
</tr>
<tr>
<td align="center"></td>
<td align="center"></td>
<td align="left"></td>
</tr>
<tr>
<td align="center"><strong><a href="#http200">200</a></strong></td>
<td align="center"><strong>OK</strong></td>
<td align="left"><strong>请求成功。一般用于 GET 与 POST 请求</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http201">201</a></strong></td>
<td align="center"><strong>Created</strong></td>
<td align="left"><strong>已创建。成功请求并创建了新的资源</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http200">202</a></strong></td>
<td align="center"><strong>Accepted</strong></td>
<td align="left"><strong>已接受。已经接受请求，但未处理完成</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http203">203</a></strong></td>
<td align="center"><strong>Non-Authoritative Information</strong></td>
<td align="left"><strong>非授权信息。请求成功。但返回的 meta 信息不在原始的服务器，而是一个副本</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http204">204</a></strong></td>
<td align="center"><strong>No Content</strong></td>
<td align="left"><strong>无内容。服务器成功处理，但未返回内容。在未更新网页的情况下，可确保浏览器继续显示当前文档</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http205">205</a></strong></td>
<td align="center"><strong>Reset Content</strong></td>
<td align="left"><strong>重置内容。服务器处理成功，用户终端（例如：浏览器）应重置文档视图。可通过此返回码清除浏览器的表单域</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http206">206</a></strong></td>
<td align="center"><strong>Partial Content</strong></td>
<td align="left"><strong>部分内容。服务器成功处理了部分 GET 请求</strong></td>
</tr>
<tr>
<td align="center"></td>
<td align="center"></td>
<td align="left"></td>
</tr>
<tr>
<td align="center"><strong><a href="#http300">300</a></strong></td>
<td align="center"><strong>Multiple Choices</strong></td>
<td align="left"><strong>多种选择。请求的资源可包括多个位置，相应可返回一个资源特征与地址的列表用于用户终端（例如：浏览器）选择</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http301">301</a></strong></td>
<td align="center"><strong>Moved Permanently</strong></td>
<td align="left"><strong>永久移动。请求的资源已被永久的移动到新 URI ，返回信息会包括新的 URI ，浏览器会自动定向到新 URI 。今后任何新的请求都应使用新的 URI 代替</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http302">302</a></strong></td>
<td align="center"><strong>Found</strong></td>
<td align="left"><strong>临时移动。与 301 类似。但资源只是临时被移动。客户端应继续使用原有 URI</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http303">303</a></strong></td>
<td align="center"><strong>See Other</strong></td>
<td align="left"><strong>查看其它地址。与 301 类似。使用 GET 和 POST 请求查看</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http304">304</a></strong></td>
<td align="center"><strong>Not Modified</strong></td>
<td align="left"><strong>未修改。所请求的资源未修改，服务器返回此状态码时，不会返回任何资源。客户端通常会缓存访问过的资源，通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http305">305</a></strong></td>
<td align="center"><strong>Use Proxy</strong></td>
<td align="left"><strong>使用代理。所请求的资源必须通过代理访问</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http306">306</a></strong></td>
<td align="center"><strong>Unused</strong></td>
<td align="left"><strong>已经被废弃的 HTTP 状态码</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http307">307</a></strong></td>
<td align="center"><strong>Temporary Redirect</strong></td>
<td align="left"><strong>临时重定向。与 302 类似。使用 GET 请求重定向</strong></td>
</tr>
<tr>
<td align="center"></td>
<td align="center"></td>
<td align="left"></td>
</tr>
<tr>
<td align="center"><strong><a href="#http400">400</a></strong></td>
<td align="center"><strong>Bad Request</strong></td>
<td align="left"><strong>客户端请求的语法错误，服务器无法理解</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http401">401</a></strong></td>
<td align="center"><strong>Unauthorized</strong></td>
<td align="left"><strong>请求要求用户的身份认证</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http402">402</a></strong></td>
<td align="center"><strong>Payment Required</strong></td>
<td align="left"><strong>保留，将来使用</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http403">403</a></strong></td>
<td align="center"><strong>Forbidden</strong></td>
<td align="left"><strong>服务器理解请求客户端的请求，但是拒绝执行此请求</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http404">404</a></strong></td>
<td align="center"><strong>Not Found</strong></td>
<td align="left"><strong>服务器无法根据客户端的请求找到资源（网页）。通过此代码，网站设计人员可设置 “您所请求的资源无法找到” 的个性页面</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http405">405</a></strong></td>
<td align="center"><strong>Method Not Allowed</strong></td>
<td align="left"><strong>客户端请求中的方法被禁止</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http406">406</a></strong></td>
<td align="center"><strong>Not Acceptable</strong></td>
<td align="left"><strong>服务器无法根据客户端请求的内容特性完成请求</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http407">407</a></strong></td>
<td align="center"><strong>Proxy Authentication Required</strong></td>
<td align="left"><strong>请求要求代理的身份认证，与 401 类似，但请求者应当使用代理进行授权</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http408">408</a></strong></td>
<td align="center"><strong>Request Time-out</strong></td>
<td align="left"><strong>服务器等待客户端发送的请求时间过长，超时</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http409">409</a></strong></td>
<td align="center"><strong>Conflict</strong></td>
<td align="left"><strong>服务器完成客户端的PUT请求是可能返回此代码，服务器处理请求时发生了冲突</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http410">410</a></strong></td>
<td align="center"><strong>Gone</strong></td>
<td align="left"><strong>客户端请求的资源已经不存在。410 不同于 404，如果资源以前有现在被永久删除了可使用 410 代码，网站设计人员可通过 301 代码指定资源的新位置</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http411">411</a></strong></td>
<td align="center"><strong>Length Required</strong></td>
<td align="left"><strong>服务器无法处理客户端发送的不带 Content-Length 的请求信息</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http412">412</a></strong></td>
<td align="center"><strong>Precondition Failed</strong></td>
<td align="left"><strong>客户端请求信息的先决条件错误</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http413">413</a></strong></td>
<td align="center"><strong>Request Entity Too Large</strong></td>
<td align="left"><strong>由于请求的实体过大，服务器无法处理，因此拒绝请求。为防止客户端的连续请求，服务器可能会关闭连接。如果只是服务器暂时无法处理，则会包含一个 Retry-After 的响应信息</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http414">414</a></strong></td>
<td align="center"><strong>Request-URI Too Large</strong></td>
<td align="left"><strong>请求的 URI 过长（ URI 通常为网址），服务器无法处理</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http415">415</a></strong></td>
<td align="center"><strong>Unsupported Media Type</strong></td>
<td align="left"><strong>服务器无法处理请求附带的媒体格式</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http416">416</a></strong></td>
<td align="center"><strong>Requested range not satisfiable</strong></td>
<td align="left"><strong>客户端请求的范围无效</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http417">417</a></strong></td>
<td align="center"><strong>Expectation Failed</strong></td>
<td align="left"><strong>服务器无法满足 Expect 的请求头信息</strong></td>
</tr>
<tr>
<td align="center"></td>
<td align="center"></td>
<td align="left"></td>
</tr>
<tr>
<td align="center"><strong><a href="#http500">500</a></strong></td>
<td align="center"><strong>Internal Server Error</strong></td>
<td align="left"><strong>服务器内部错误，无法完成请求</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http501">501</a></strong></td>
<td align="center"><strong>Not Implemented</strong></td>
<td align="left"><strong>服务器不支持请求的功能，无法完成请求</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http502">502</a></strong></td>
<td align="center"><strong>Bad Gateway</strong></td>
<td align="left"><strong>充当网关或代理的服务器，从远端服务器接收到了一个无效的请求</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http503">503</a></strong></td>
<td align="center"><strong>Service Unavailable</strong></td>
<td align="left"><strong>由于超载或系统维护，服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的 Retry-After 头信息中</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http504">504</a></strong></td>
<td align="center"><strong>Gateway Time-out</strong></td>
<td align="left"><strong>充当网关或代理的服务器，未及时从远端服务器获取请求</strong></td>
</tr>
<tr>
<td align="center"><strong><a href="#http505">505</a></strong></td>
<td align="center"><strong>HTTP Version not supported</strong></td>
<td align="left"><strong>服务器不支持请求的 HTTP 协议的版本，无法完成处理</strong></td>
</tr>
</tbody></table></div>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2024/03/14/Spring%E7%AC%94%E8%AE%B0/">Spring笔记</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2024-03-14</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2024-03-14</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="AOP底层实现原理："   >
          <a href="#AOP底层实现原理：" class="heading-link"><i class="fas fa-link"></i></a><a href="#AOP底层实现原理：" class="headerlink" title="AOP底层实现原理："></a>AOP底层实现原理：</h2>
      
        <h5 id="首先定义一个接口Vehicle"   >
          <a href="#首先定义一个接口Vehicle" class="heading-link"><i class="fas fa-link"></i></a><a href="#首先定义一个接口Vehicle" class="headerlink" title="首先定义一个接口Vehicle"></a>首先定义一个接口Vehicle</h5>
      <figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Car</span> <span class="keyword">implements</span> <span class="title class_">Vehicle</span>&#123;</span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">run</span><span class="params">()</span> &#123;</span><br><span class="line">        System.out.println(<span class="string">&quot;Car正在run~~~&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="keyword">public</span> String <span class="title function_">fly</span><span class="params">(<span class="type">int</span> height)</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="string">&quot;Car飞行的高度为：&quot;</span> + height;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>


        <h5 id="然后定义两个Car和Ship类去实现Vehicle接口"   >
          <a href="#然后定义两个Car和Ship类去实现Vehicle接口" class="heading-link"><i class="fas fa-link"></i></a><a href="#然后定义两个Car和Ship类去实现Vehicle接口" class="headerlink" title="然后定义两个Car和Ship类去实现Vehicle接口"></a>然后定义两个Car和Ship类去实现Vehicle接口</h5>
      <figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Car</span> <span class="keyword">implements</span> <span class="title class_">Vehicle</span>&#123;</span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">run</span><span class="params">()</span> &#123;</span><br><span class="line">        System.out.println(<span class="string">&quot;Car正在run~~~&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="keyword">public</span> String <span class="title function_">fly</span><span class="params">(<span class="type">int</span> height)</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="string">&quot;Car飞行的高度为：&quot;</span> + height;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>

<figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Ship</span> <span class="keyword">implements</span> <span class="title class_">Vehicle</span>&#123;</span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">run</span><span class="params">()</span> &#123;</span><br><span class="line">        System.out.println(<span class="string">&quot;Ship正在run~~~&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="meta">@Override</span></span><br><span class="line">    <span class="keyword">public</span> String <span class="title function_">fly</span><span class="params">(<span class="type">int</span> height)</span> &#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="string">&quot;Ship飞行的高度为：&quot;</span> + height;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>


        <h5 id="最后定义VehicleProxyProvider返回一个代理对象"   >
          <a href="#最后定义VehicleProxyProvider返回一个代理对象" class="heading-link"><i class="fas fa-link"></i></a><a href="#最后定义VehicleProxyProvider返回一个代理对象" class="headerlink" title="最后定义VehicleProxyProvider返回一个代理对象"></a>最后定义VehicleProxyProvider返回一个代理对象</h5>
      <figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">VehicleProxyProvider</span> &#123;</span><br><span class="line">    <span class="comment">//定义一个属性</span></span><br><span class="line">    <span class="comment">//target_vehicle表示真正执行的对象</span></span><br><span class="line">    <span class="comment">//该对象需要实现了Vehicle接口</span></span><br><span class="line">    <span class="keyword">private</span> Vehicle target_vehicle;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">public</span> <span class="title function_">VehicleProxyProvider</span><span class="params">(Vehicle target_vehicle)</span> &#123;</span><br><span class="line">        <span class="built_in">this</span>.target_vehicle = target_vehicle;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//编写一个可以返回代理对象的方法，</span></span><br><span class="line">    <span class="comment">// 该代理对象可以通过反射机制调用到被代理对象的方法</span></span><br><span class="line">    <span class="keyword">public</span> Vehicle <span class="title function_">getProxy</span><span class="params">()</span>&#123;</span><br><span class="line"></span><br><span class="line">        <span class="comment">//得到类的加载器</span></span><br><span class="line">        <span class="type">ClassLoader</span> <span class="variable">classLoader</span> <span class="operator">=</span></span><br><span class="line">                target_vehicle.getClass().getClassLoader();</span><br><span class="line"></span><br><span class="line">        <span class="comment">//得到要代理的对象/被执行对象的接口信息，底层是通过接口来完成调用</span></span><br><span class="line">        Class&lt;?&gt;[] interfaces =</span><br><span class="line">                target_vehicle.getClass().getInterfaces();</span><br><span class="line"></span><br><span class="line">        <span class="comment">//创建InvocationHandler对象</span></span><br><span class="line">        <span class="comment">//因为InvocationHandler是接口，</span></span><br><span class="line">        <span class="comment">// 所有我们可以通过局部内部类的方式来创建该对象</span></span><br><span class="line">        <span class="comment">/**</span></span><br><span class="line"><span class="comment">         * public interface InvocationHandler &#123;</span></span><br><span class="line"><span class="comment">         *      public Object invoke(Object proxy, Method method, Object[] args)</span></span><br><span class="line"><span class="comment">         *      throws Throwable;</span></span><br><span class="line"><span class="comment">         *      &#125;</span></span><br><span class="line"><span class="comment">         *   invoke方法是将来执行我们的target_vehicle的方法时，会调用到</span></span><br><span class="line"><span class="comment">         */</span></span><br><span class="line">        <span class="type">InvocationHandler</span> <span class="variable">invocationHandler</span> <span class="operator">=</span></span><br><span class="line">                <span class="keyword">new</span> <span class="title class_">InvocationHandler</span>() &#123;</span><br><span class="line">                    <span class="comment">/**</span></span><br><span class="line"><span class="comment">                     * invoke方法是将来执行我们的target_vehicle的方法时，会调用</span></span><br><span class="line"><span class="comment">                     *</span></span><br><span class="line"><span class="comment">                     * <span class="doctag">@param</span> proxy 表示代理对象</span></span><br><span class="line"><span class="comment">                     *</span></span><br><span class="line"><span class="comment">                     * <span class="doctag">@param</span> method 就是通过代理对象调用方法时去掉的那个方法，</span></span><br><span class="line"><span class="comment">                     *               如：代理对象.run() 或者 代理对象.fly(100)</span></span><br><span class="line"><span class="comment">                     *</span></span><br><span class="line"><span class="comment">                     * <span class="doctag">@param</span> args 表示调用代理对象来执行方法时需要传入的参数，</span></span><br><span class="line"><span class="comment">                     *             如：代理对象.fly(xxx) xxx就是传入的参数</span></span><br><span class="line"><span class="comment">                     *</span></span><br><span class="line"><span class="comment">                     * <span class="doctag">@return</span> 表示代理对象.run()执行后的结果</span></span><br><span class="line"><span class="comment">                     * <span class="doctag">@throws</span> Throwable</span></span><br><span class="line"><span class="comment">                     */</span></span><br><span class="line">            <span class="meta">@Override</span></span><br><span class="line">            <span class="keyword">public</span> Object <span class="title function_">invoke</span><span class="params">(Object proxy, Method method, Object[] args)</span> <span class="keyword">throws</span> Throwable &#123;</span><br><span class="line">                System.out.println(<span class="string">&quot;全部开始运作咯~~~&quot;</span>);</span><br><span class="line">                <span class="comment">//这里method 是public abstract void com.belly.spring.proxy1.Vehicle.run()</span></span><br><span class="line">                <span class="comment">//          或是public abstract void com.belly.spring.proxy1.Vehicle.fly(xxx)</span></span><br><span class="line">                <span class="comment">//target_vehicle 是需要代理的对象</span></span><br><span class="line">                <span class="comment">//args 是代理对象调用的方法里的参数，如：fly(xxx)方法参数为xxx、</span></span><br><span class="line">                <span class="comment">//                              run()方法没有参数所有args为null</span></span><br><span class="line">                <span class="type">Object</span> <span class="variable">result</span> <span class="operator">=</span> method.invoke(target_vehicle, args);</span><br><span class="line">                System.out.println(<span class="string">&quot;全部停止运作咯~~~&quot;</span>);</span><br><span class="line">                <span class="keyword">return</span> result;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;;</span><br><span class="line"></span><br><span class="line">        <span class="comment">/**</span></span><br><span class="line"><span class="comment">         * public static Object newProxyInstance(ClassLoader loader,</span></span><br><span class="line"><span class="comment">         *                                           Class&lt;?&gt;[] interfaces,</span></span><br><span class="line"><span class="comment">         *                                           InvocationHandler h)</span></span><br><span class="line"><span class="comment">         *   newProxyInstance()方法说明:</span></span><br><span class="line"><span class="comment">         *   1.newProxyInstance()方法可以返回一个代理对象</span></span><br><span class="line"><span class="comment">         *   2.ClassLoader loader 类的加载器</span></span><br><span class="line"><span class="comment">         *   3.Class&lt;?&gt;[] interfaces 就是将来要代理的对象的接口信息</span></span><br><span class="line"><span class="comment">         *   4.InvocationHandler h 调用处理器/对象 其中它里面有一个非常重要的方法invoke</span></span><br><span class="line"><span class="comment">         */</span></span><br><span class="line">        <span class="type">Vehicle</span> <span class="variable">proxy</span> <span class="operator">=</span></span><br><span class="line">                (Vehicle) Proxy.newProxyInstance(classLoader, interfaces, invocationHandler);</span><br><span class="line"></span><br><span class="line">        <span class="keyword">return</span> proxy;</span><br><span class="line">    &#125;</span><br></pre></td></tr></table></div></figure>

<p>这样我们就能够通过给VehicleProxyProvider传入一个Car对象或则Ship对象来返回一个代理对象，AOP就是在反射调用目标方法的前后去执行你所定义的代码，如图：</p>
<figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Override</span></span><br><span class="line">            <span class="keyword">public</span> Object <span class="title function_">invoke</span><span class="params">(Object proxy, Method method, Object[] args)</span> <span class="keyword">throws</span> Throwable &#123;</span><br><span class="line">                <span class="type">Object</span> <span class="variable">result</span> <span class="operator">=</span> <span class="literal">null</span>;</span><br><span class="line">                <span class="keyword">try</span> &#123;</span><br><span class="line"></span><br><span class="line">                    System.out.println(<span class="string">&quot;方法执行前-日志-方法名-&quot;</span> + method.getName() + <span class="string">&quot;-参数&quot;</span></span><br><span class="line">                            + Arrays.asList(args));<span class="comment">//这里从AOP角度看，就是一个横切关注点-前置通知</span></span><br><span class="line">                    BellyAOP.before(proxy, method, args);</span><br><span class="line"></span><br><span class="line">                    <span class="comment">//使用反射调用方法</span></span><br><span class="line">                    result = method.invoke(target_obj, args);</span><br><span class="line"></span><br><span class="line">                    System.out.println(<span class="string">&quot;方法执行正常结束-日志-方法名-&quot;</span> + method.getName()</span><br><span class="line">                            + <span class="string">&quot;-结果result=&quot;</span> + result);<span class="comment">//从AOP角度看，这也是横切关注点-返回通知</span></span><br><span class="line"></span><br><span class="line">                &#125; <span class="keyword">catch</span> (Exception e) &#123;</span><br><span class="line"></span><br><span class="line">                    System.out.println(<span class="string">&quot;方法执行异常-日志-方法名-&quot;</span> + method.getName()</span><br><span class="line">                            + <span class="string">&quot;-异常类型=&quot;</span> + e.getClass().getName());<span class="comment">//从AOP角度看，也是横切关注点-异常通知</span></span><br><span class="line">                    <span class="keyword">throw</span> <span class="keyword">new</span> <span class="title class_">RuntimeException</span>(e);</span><br><span class="line"></span><br><span class="line">                &#125; <span class="keyword">finally</span> &#123;</span><br><span class="line"></span><br><span class="line">                    <span class="comment">//从AOP的角度看，也是一个横切关注点-最终通知</span></span><br><span class="line">                    System.out.println(<span class="string">&quot;方法最终结束-日志-方法名-&quot;</span> + method.getName());</span><br><span class="line"></span><br><span class="line">                &#125;</span><br><span class="line">                <span class="keyword">return</span> result;</span><br><span class="line">            &#125;</span><br></pre></td></tr></table></div></figure>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2024/03/14/SpringMVC%E7%AC%94%E8%AE%B0/">SpringMVC笔记</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2024-03-14</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2024-03-14</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="RequestParam注解："   >
          <a href="#RequestParam注解：" class="heading-link"><i class="fas fa-link"></i></a><a href="#RequestParam注解：" class="headerlink" title="@RequestParam注解："></a>@RequestParam注解：</h2>
      <figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Controller</span></span><br><span class="line"><span class="meta">@RequestMapping(&quot;/vote&quot;)</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">VoteHandler</span> &#123;</span><br><span class="line">   <span class="meta">@RequestMapping(value = &quot;/test01&quot;)</span></span><br><span class="line">   <span class="keyword">public</span> String <span class="title function_">test01</span><span class="params">(<span class="meta">@RequestParam(value = &quot;name&quot;, required = false)</span> String username)</span>&#123;</span><br><span class="line">        System.out.println(<span class="string">&quot;username= &quot;</span> + username);</span><br><span class="line">        <span class="keyword">return</span> <span class="string">&quot;success&quot;</span>;</span><br><span class="line">   &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>


        <h4 id="RequestParam-value-x3D-“name”-required-x3D-false-注解说明："   >
          <a href="#RequestParam-value-x3D-“name”-required-x3D-false-注解说明：" class="heading-link"><i class="fas fa-link"></i></a><a href="#RequestParam-value-x3D-“name”-required-x3D-false-注解说明：" class="headerlink" title="@RequestParam(value &#x3D; “name”, required &#x3D; false)注解说明："></a>@RequestParam(value &#x3D; “name”, required &#x3D; false)注解说明：</h4>
      <p>1.获取到超链接传递的数据，请求<span class="exturl"><a class="exturl__link"   target="_blank" rel="noopener" href="http://localhost:8080/springmvc/vote/test01?name=xx" >http://localhost:8080/springmvc/vote/test01?name=xx</a><span class="exturl__icon"><i class="fas fa-external-link-alt"></i></span></span><br>2.@RequestParam 表示会接收提交的参数<br>3.value &#x3D; “name” 表示提交的参数名为name<br>4.required &#x3D; false 表示该参数可以没有，默认是ture，表示必须要传这个参数<br>5.当我使用@RequestParam(value &#x3D; “name”, required &#x3D; false)后就可以让请求的的参数名和方法的形参名可以不一致</p>

        <h2 id="ModelAttribute注解："   >
          <a href="#ModelAttribute注解：" class="heading-link"><i class="fas fa-link"></i></a><a href="#ModelAttribute注解：" class="headerlink" title="@ModelAttribute注解："></a>@ModelAttribute注解：</h2>
      <figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Controller</span></span><br><span class="line"><span class="meta">@RequestMapping(&quot;/vote&quot;)</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">VoteHandler</span> &#123;</span><br><span class="line">	<span class="meta">@ModelAttribute</span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">prepareModel</span><span class="params">()</span>&#123;</span><br><span class="line">        System.out.println(<span class="string">&quot;——————prepareModel()完成准备工作——————&quot;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>

<p>1.当VoteHandler的方法被标识@ModelAttribute就视为一个前置方法<br>2.当调用该VoteHandler类的其他的方法时，都会先执行该前置方法<br>3.类似AOP的前置通知<br>4.prepareModel前置方法，会切入到其他方法前执行<br>5.该用法一般用在用户管理</p>

        <h2 id="InitBinder注解："   >
          <a href="#InitBinder注解：" class="heading-link"><i class="fas fa-link"></i></a><a href="#InitBinder注解：" class="headerlink" title="@InitBinder注解："></a>@InitBinder注解：</h2>
      <figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@InitBinder</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title function_">initBinder</span><span class="params">(WebDataBinder webDataBinder)</span>&#123;</span><br><span class="line">    webDataBinder.setDisallowedFields(<span class="string">&quot;birthday&quot;</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>

<p>1.方法上需要标注@InitBinder springmvc底层会初始化WebDataBinder<br>2.调用webDataBinder.setDisallowedFields(“birthday”);表示取消指定属性的绑定即：当表单提交字段为birthday时，<br>就不会把接收到的birthday值填充到model数据good的birthday属性中<br>3.机制：springmvc在底层通过反射调用目标方法时，接收到http请求的参数和值，使用反射+注解技术，取消对指定属性的填充<br>4.setDisallowedFields支持可变参数，可以填写多个字段<br>5.如果取消某个属性绑定，验证就没意义了，应当把验证的@NotEmpty注解去掉，birthday属性会使用默认值null</p>

        <h2 id="参数封装："   >
          <a href="#参数封装：" class="heading-link"><i class="fas fa-link"></i></a><a href="#参数封装：" class="headerlink" title="参数封装："></a>参数封装：</h2>
      
        <h4 id="1"   >
          <a href="#1" class="heading-link"><i class="fas fa-link"></i></a><a href="#1" class="headerlink" title="1."></a>1.</h4>
      <figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@PostMapping(&quot;/test03&quot;)</span></span><br><span class="line"><span class="keyword">public</span> String <span class="title function_">test03</span><span class="params">(Master master)</span>&#123;</span><br><span class="line">    System.out.println(<span class="string">&quot;master=&quot;</span> + master);</span><br><span class="line">    <span class="keyword">return</span> <span class="string">&quot;success&quot;</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>

<p>获取提交的数据 -&gt; 封装成java对象<br>1.方法的形参用对应的类型来指定即可，SpringMVC会自动的进行封装<br>2.如果自动的完成封装，要求提交的数据，参数名和对象的字段名保持一致<br>3.如果属性是对象，这里仍然是通过 字段名.字段名<br>4.如果提交的数据的参数名和对象的字段名不匹配，则对象的属性值就是null<br>5.该封装底层是反射+注解..来实现</p>

        <h4 id="2"   >
          <a href="#2" class="heading-link"><i class="fas fa-link"></i></a><a href="#2" class="headerlink" title="2."></a>2.</h4>
      <figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@RequestMapping(&quot;/test06&quot;)</span></span><br><span class="line"><span class="keyword">public</span> String <span class="title function_">test06</span><span class="params">(Master master, Map&lt;String, Object&gt; map)</span>&#123;</span><br><span class="line">    map.put(<span class="string">&quot;address&quot;</span>, <span class="string">&quot;beijing&quot;</span>);</span><br><span class="line">    map.put(<span class="string">&quot;master&quot;</span>, <span class="literal">null</span>);</span><br><span class="line">    <span class="keyword">return</span> <span class="string">&quot;success&quot;</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>

<p>1.通过Map&lt;String, Object&gt;设置数据到request域<br>2.通过map对象，添加属性到request中<br>3.原理分析：springmvc会遍历map，然后将map的k-v，存放到request域中</p>

        <h2 id="文件上传和下载："   >
          <a href="#文件上传和下载：" class="heading-link"><i class="fas fa-link"></i></a><a href="#文件上传和下载：" class="headerlink" title="文件上传和下载："></a>文件上传和下载：</h2>
      
        <h4 id="1-文件上传："   >
          <a href="#1-文件上传：" class="heading-link"><i class="fas fa-link"></i></a><a href="#1-文件上传：" class="headerlink" title="1.文件上传："></a>1.文件上传：</h4>
      <figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@RequestMapping(value = &quot;/upload&quot;)</span></span><br><span class="line"><span class="meta">@Controller</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">UploadFileHandler</span> &#123;</span><br><span class="line">    <span class="meta">@RequestMapping(&quot;/fileUpload&quot;)</span></span><br><span class="line">    <span class="keyword">public</span> String <span class="title function_">fileUpload</span><span class="params">(<span class="meta">@RequestParam(value = &quot;file&quot;)</span> MultipartFile file,</span></span><br><span class="line"><span class="params">                             HttpServletRequest request,</span></span><br><span class="line"><span class="params">                             String introduceName)</span> <span class="keyword">throws</span> IOException &#123;</span><br><span class="line"></span><br><span class="line">        <span class="comment">//接收到提交得文件名</span></span><br><span class="line">        <span class="type">String</span> <span class="variable">originalFilename</span> <span class="operator">=</span> file.getOriginalFilename();</span><br><span class="line">        System.out.println(<span class="string">&quot;上传得文件名：&quot;</span> + originalFilename);</span><br><span class="line">        System.out.println(<span class="string">&quot;上传得文件介绍：&quot;</span> + introduceName);</span><br><span class="line"></span><br><span class="line">        <span class="comment">//得到要把上传文件保存到真正运行得那个路径[全路径包括文件名]</span></span><br><span class="line">        <span class="type">String</span> <span class="variable">fileFullPath</span> <span class="operator">=</span></span><br><span class="line">                request.getServletContext().getRealPath(<span class="string">&quot;/img/&quot;</span> + originalFilename);</span><br><span class="line"></span><br><span class="line">        <span class="comment">//创建文件</span></span><br><span class="line">        <span class="type">File</span> <span class="variable">saveToFile</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">File</span>(fileFullPath);</span><br><span class="line"></span><br><span class="line">        <span class="comment">//将上传得文件，转存到saveToFile文件里</span></span><br><span class="line">        file.transferTo(saveToFile);</span><br><span class="line"></span><br><span class="line">        <span class="comment">//返回到成功页面</span></span><br><span class="line">        <span class="keyword">return</span> <span class="string">&quot;success&quot;</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure>


        <h4 id="文件下载："   >
          <a href="#文件下载：" class="heading-link"><i class="fas fa-link"></i></a><a href="#文件下载：" class="headerlink" title="文件下载："></a>文件下载：</h4>
      <figure class="highlight java"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@RequestMapping(&quot;/down&quot;)</span></span><br><span class="line"><span class="meta">@Controller</span></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">DownFileHandler</span> &#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//响应用户下载文件的请求</span></span><br><span class="line">    <span class="meta">@RequestMapping(&quot;/downFile&quot;)</span></span><br><span class="line">    <span class="keyword">public</span> ResponseEntity&lt;<span class="type">byte</span>[]&gt; downFile(HttpSession session) <span class="keyword">throws</span> IOException &#123;</span><br><span class="line"></span><br><span class="line">        <span class="comment">//1.先获取到下载文件的InputStream流</span></span><br><span class="line">        <span class="type">InputStream</span> <span class="variable">resourceAsStream</span> <span class="operator">=</span></span><br><span class="line">                session.getServletContext().getResourceAsStream(<span class="string">&quot;/img/copy.jpg&quot;</span>);</span><br><span class="line"></span><br><span class="line">        <span class="comment">//2.开辟一个存放文件的byte数组，这里使用byte[]是库支持二进制数据</span></span><br><span class="line">        <span class="type">byte</span>[] bytes = <span class="keyword">new</span> <span class="title class_">byte</span>[resourceAsStream.available()];</span><br><span class="line"></span><br><span class="line">        <span class="comment">//3.将下载文件的数据，读入到byte[]</span></span><br><span class="line">        resourceAsStream.read(bytes);</span><br><span class="line"></span><br><span class="line">        <span class="comment">//public ResponseEntity(@Nullable T body, @Nullable MultiValueMap&lt;String, String&gt; headers, HttpStatus status) &#123;&#125;</span></span><br><span class="line">        <span class="comment">//要返回的对象要三个参数 1.要下载的文件数据 2.http响应状态 3.http响应头headers</span></span><br><span class="line"></span><br><span class="line">        <span class="comment">//4.创建返回HttpStatus</span></span><br><span class="line">        <span class="type">HttpStatus</span> <span class="variable">httpStatus</span> <span class="operator">=</span> HttpStatus.OK;</span><br><span class="line"></span><br><span class="line">        <span class="comment">//5.创建headers</span></span><br><span class="line">        <span class="type">HttpHeaders</span> <span class="variable">httpHeaders</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">HttpHeaders</span>();</span><br><span class="line">        <span class="comment">//指定返回的数据，客户端应当以附件形式处理</span></span><br><span class="line">        httpHeaders.add(<span class="string">&quot;Content-Disposition&quot;</span>, <span class="string">&quot;attachment;filename=copy.jpg&quot;</span>);</span><br><span class="line"></span><br><span class="line">        <span class="comment">//构建一个ResponseEntity对象放入需要的参数</span></span><br><span class="line">        ResponseEntity&lt;<span class="type">byte</span>[]&gt; responseEntity =</span><br><span class="line">                <span class="keyword">new</span> <span class="title class_">ResponseEntity</span>&lt;<span class="type">byte</span>[]&gt;(bytes, httpHeaders, httpStatus);</span><br><span class="line">        <span class="keyword">return</span> responseEntity;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></div></figure></div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2024/02/27/%E4%B8%80%E4%BA%8C%E6%9C%88%E6%80%BB%E7%BB%93/">一月和二月总结</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2024-02-27</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2024-02-27</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="一月和二月总结："   >
          <a href="#一月和二月总结：" class="heading-link"><i class="fas fa-link"></i></a><a href="#一月和二月总结：" class="headerlink" title="一月和二月总结："></a>一月和二月总结：</h2>
      <p>1.将近一个月的时间完成制作代码生成器项目，部署和上线。</p>
<p>2.找到Java实习岗位。</p>
<p>3.学会了一丢丢的性能优化思想。</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2024/01/10/%E4%BA%8C%E5%9B%9B%E5%B9%B4%E5%89%8D%E6%9C%9F%E7%9B%AE%E6%A0%87/">二四年前期目标</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2024-01-10</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2024-01-10</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="2024年前期目标规划："   >
          <a href="#2024年前期目标规划：" class="heading-link"><i class="fas fa-link"></i></a><a href="#2024年前期目标规划：" class="headerlink" title="2024年前期目标规划："></a>2024年前期目标规划：</h2>
      <p>学习一些代码优化技术，算法本我割舍了好久了，需要快速巩固之前学的，坚持每天在乐扣刷一两道题。</p>
<p>1.学习JUC</p>
<p>2.深入学习JVM</p>
<p>3.刷算法</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2024/01/10/%E5%8D%81%E4%B8%80%E6%9C%88%E5%92%8C%E5%8D%81%E4%BA%8C%E6%9C%88%E6%80%BB%E7%BB%93/">十一月和十二月总结</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2024-01-10</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2024-01-10</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="十一月和十二月总结："   >
          <a href="#十一月和十二月总结：" class="heading-link"><i class="fas fa-link"></i></a><a href="#十一月和十二月总结：" class="headerlink" title="十一月和十二月总结："></a>十一月和十二月总结：</h2>
      <p>23年最后这三月真是闹腾，先是中耳炎再到甲流和支原体肺炎，真的是一波未平一波又起，搞得我学习心思都没了，进度也是一言难尽。不过该学的都学完了，正式进入下一个更重要阶段——实习。</p>
<p>1.完成最常见的Spring Cloud微服务组件学习并熟练使用，如Eureka、GateWay、Nacos、OpenFeign、Sleuth+Zipkin、Sentinel、Seata。</p>
<p>2.完成Linux操作系统学习，了解了命令的基本使用，能够维护我买的小服务器。</p>
<p>3.完成Nginx学习，知道正反向代理的区别，学会自定义Nginx的config配置文件，来实现负载均衡和请求转发。</p>
<p>4.完成Redis系统学习。</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/11/06/%E5%8D%81%E4%B8%80%E6%9C%88%E6%B8%85%E5%8D%95/">十一月清单</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-11-06</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-11-06</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="十一月清单："   >
          <a href="#十一月清单：" class="heading-link"><i class="fas fa-link"></i></a><a href="#十一月清单：" class="headerlink" title="十一月清单："></a>十一月清单：</h2>
      <p>1.继续SpringCloud组件学习</p>
<p>2.学习Linux操作系统</p>
<p>3.学习Nginx</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/11/06/%E5%8D%81%E6%9C%88%E6%80%BB%E7%BB%93/">十月总结</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-11-06</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-11-06</span></span></div></header><div class="post-body"><div class="post-excerpt"><p>​	十月耳朵旧病复发，学习进度又拖延了，还要连续每周去趟医院，只能带一边耳机学习，不过现在好点了。在此之前完成了毕业设计项目并部署上线了，后面可以继续优化。SpringCloud微服务组件刚学完Eureka注册中心、GateWay网关、链路追踪Sleuth和Zipkin。继续往前冲~~~~</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/10/31/docker%E9%83%A8%E7%BD%B2/">docker前后端+mysql部署</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-10-31</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-11-06</span></span></div></header><div class="post-body"><div class="post-excerpt"><p>在服务器上使用Docker输入上面命令下载mysql5.7版本：</p>
<figure class="highlight bash"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -d --name mysql -p 3306:3306 -e TZ=Asia/shanghai -e MYSQL_ROOT_PASSWORD=128 mysql:5.7</span><br></pre></td></tr></table></div></figure>

<p>后端项目镜像搭建：</p>
<figure class="highlight bash"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker build -t sixseven .</span><br></pre></td></tr></table></div></figure>

<p>后台运行后端项目：</p>
<figure class="highlight bash"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -d --name sixseven -p 9090:9090 -v /root/docker/dist/src:/root/docker/dist/src sixseven:v1.1.3</span><br></pre></td></tr></table></div></figure>

<p>前端项目镜像搭建：</p>
<figure class="highlight bash"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker build -t sixseven-frontend:v1.1.1 ./docker</span><br></pre></td></tr></table></div></figure>

<p>后台运行前端：</p>
<figure class="highlight bash"><div class="table-container"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -d --name nginx -p 80:80 -v /root/docker/dist/html:/user/share/nginx/html sixseven-frontend:1.2.3</span><br></pre></td></tr></table></div></figure>

</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/10/09/%E5%8D%81%E6%9C%88%E6%B8%85%E5%8D%95/">十月清单</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-10-09</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-10-09</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="续九月未完成的："   >
          <a href="#续九月未完成的：" class="heading-link"><i class="fas fa-link"></i></a><a href="#续九月未完成的：" class="headerlink" title="续九月未完成的："></a>续九月未完成的：</h2>
      <p>1.完成毕业设计<br>2.优化简历</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/09/01/%E4%B9%9D%E6%9C%88%E6%B8%85%E5%8D%95/">九月清单</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-09-01</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-09-01</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="九月开学内卷计划："   >
          <a href="#九月开学内卷计划：" class="heading-link"><i class="fas fa-link"></i></a><a href="#九月开学内卷计划：" class="headerlink" title="九月开学内卷计划："></a>九月开学内卷计划：</h2>
      <p>1.学习SpringBoot框架<br>2.完成毕业设计<br>3.准备简历(可能赶不上秋招了)</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/09/01/%E4%B8%83%E5%85%AB%E6%9C%88%E6%9A%91%E5%81%87%E6%80%BB%E7%BB%93/">七八月暑假总结</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-09-01</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-09-01</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="六月-暑假两月完成了Spring、SpringMVC、Mybatis的学习"   >
          <a href="#六月-暑假两月完成了Spring、SpringMVC、Mybatis的学习" class="heading-link"><i class="fas fa-link"></i></a><a href="#六月-暑假两月完成了Spring、SpringMVC、Mybatis的学习" class="headerlink" title="六月+暑假两月完成了Spring、SpringMVC、Mybatis的学习"></a>六月+暑假两月完成了Spring、SpringMVC、Mybatis的学习</h2>
      <p>包括了底层代码的解读和原理机制实现，比如：ioc容器的底层实现、aop的动态代理机制，还亲自动手写了SpringMVC底层实现，从前端发送url-&gt;DispatcherServlet-&gt;映射器-&gt;返回到DispatcherServlet-&gt;处理器适配器-&gt;Controller-&gt;正常自己实现的业务代码-&gt;返回到Controller-&gt;ModelAndView返回到处理器适配器-&gt;返回给DispatcherServlet-&gt;ViewResovler-&gt;再返回给DispatcherServlet-&gt;视图渲染-&gt;返回响应。属于是收获满满^_^</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/05/10/%E4%BA%94%E6%9C%88%E5%AD%A6%E4%B9%A0%E6%B8%85%E5%8D%95/">五月的学习清单</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-05-10</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-09-01</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="系统学习框架知识："   >
          <a href="#系统学习框架知识：" class="heading-link"><i class="fas fa-link"></i></a><a href="#系统学习框架知识：" class="headerlink" title="系统学习框架知识："></a>系统学习框架知识：</h2>
      <p>1.前端框架Vue+Axios[要求：看得懂、能维护、会调api即可]<br>2.后端框架SSM</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/05/10/%E5%9B%9B%E6%9C%88%E6%80%BB%E7%BB%93/">四月总结</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-05-10</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-05-10</span></span></div></header><div class="post-body"><div class="post-excerpt"><p>四月完成数据库复习，就进入了web[servlet+jsp那一套]学习。自己动手写了个简单版的小tomcat，运用到了dom4j、反射、网络编程、IO等java基础，加强了对tomcat的底层机制理解。原本计算机基础系统学习是在四月完成的，但里面大多数都是理论知识，太枯燥了，只能一天看一点，一步一步的往前推进。这个属于是考虑不全，临时改变计划，不过四月一边学web一边把前端的h5、c3、js、jquery、ajax学了，不过只是简单的学习了一下，前端对自己的要求是能看懂、能维护、会调api的一个层面。</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/03/21/%E5%9B%9B%E6%9C%88%E7%9A%84%E5%AD%A6%E4%B9%A0%E6%B8%85%E5%8D%95/">四月的学习清单</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-03-21</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-09-01</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="接下来四月补习一下计算机基础知识："   >
          <a href="#接下来四月补习一下计算机基础知识：" class="heading-link"><i class="fas fa-link"></i></a><a href="#接下来四月补习一下计算机基础知识：" class="headerlink" title="接下来四月补习一下计算机基础知识："></a>接下来四月补习一下计算机基础知识：</h2>
      <p>1.数据结构与算法基础<br>2.计算机操作系统<br>3.计算机网络<br>4.复习数据库知识</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/03/21/%E4%B8%89%E6%9C%88%E5%B7%A9%E5%9B%BAJava%E5%9F%BA%E7%A1%80/">三月巩固Java基础</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-03-21</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-03-21</span></span></div></header><div class="post-body"><div class="post-excerpt"><p>每天坚持自学八小时以上！终于把Java基础复习完辣！！！<br>如梦初醒，醍醐灌顶。哈哈哈哈<br>给爷冲冲冲冲冲冲冲冲冲冲冲冲!!!!!!</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/03/03/%E5%9B%9E%E4%B8%8D%E5%88%B0%E7%9A%84%E8%BF%87%E5%8E%BB/">回不到的过去</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-03-03</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-10-09</span></span></div></header><div class="post-body"><div class="post-excerpt"><p>  高考已过两年之久，每次睡前都会回想，我整个中学生涯浑浑噩噩，全是在电脑游戏颓废中度过。有人会问我，你学习有没有目标，每次都只是敷衍过去，其实我根本不知道什么是目标，未来会怎么样，只是在温室里躺平，没有一点儿动力。有的人说现在大部分人都是这个状态，做好当下的任务就好了，不用考虑未来会怎么样，可我没得选了，就算不能证明我可以，那也要证明我不可以。<br>  我绝对不能让自己这样继续懒散下去了，你会说没有考上好的大学会有遗憾吗，那当然是有，但我在高中的最后那段时间里<strong>学会了，如何去学习，如何去进步</strong>，这都比什么都宝贵。这何尝不是一种成长，加油！！！未来仍可握于手中。</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/02/28/%E5%85%85%E5%AE%9E%E7%9A%84%E5%AF%92%E5%81%87/">寒假总结</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-02-28</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-09-01</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h2 id="在摸索了一学期之后，终于确定了自己今后的学习路线和未来规划————java后端开发方向。"   >
          <a href="#在摸索了一学期之后，终于确定了自己今后的学习路线和未来规划————java后端开发方向。" class="heading-link"><i class="fas fa-link"></i></a><a href="#在摸索了一学期之后，终于确定了自己今后的学习路线和未来规划————java后端开发方向。" class="headerlink" title="在摸索了一学期之后，终于确定了自己今后的学习路线和未来规划————java后端开发方向。"></a>在摸索了一学期之后，终于确定了自己今后的学习路线和未来规划————java后端开发方向。</h2>
      <p>整个寒假，为了往后看得懂源码，我巩固了Java一些基础知识，发现之前学得全是皮毛，对基础知识并没有很深刻的印象，我开始在b站找资源去学习Java，来为之后学习主流Spring框架做准备。<br>不过Java还没复习完就开学了，有点可惜，希望三月份能复习完。然后再去学习框架知识和做两个项目来熟练掌握其使用。<br>也希望我在暑假之前能具备去实习标准。</p>
</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/02/27/%E5%9C%A8post%E4%B8%8B%E6%96%B0%E5%BB%BA%E6%96%87%E7%AB%A0/">别滑辣，没有辣</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-02-27</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-09-01</span></span></div></header><div class="post-body"><div class="post-excerpt">
        <h1 id="就到这啦！真心感谢你能看完我的成长之路……"   >
          <a href="#就到这啦！真心感谢你能看完我的成长之路……" class="heading-link"><i class="fas fa-link"></i></a><a href="#就到这啦！真心感谢你能看完我的成长之路……" class="headerlink" title="就到这啦！真心感谢你能看完我的成长之路……"></a>就到这啦！真心感谢你能看完我的成长之路……</h1>
      </div></div></article></section><nav class="paginator"><div class="paginator-inner"><span class="page-number current">1</span></div></nav></div></div><div class="sidebar-wrap" id="sidebar-wrap"><aside class="sidebar" id="sidebar"><section class="sidebar-toc hide"></section><!-- ov = overview--><section class="sidebar-ov"><div class="sidebar-ov-author"><div class="sidebar-ov-author__avatar"><img class="sidebar-ov-author__avatar_img" src="/pho/IMG_0744(20220413-103811).JPG" alt="avatar"></div><p class="sidebar-ov-author__text">时时勤拂拭，勿使惹尘埃。</p></div><div class="sidebar-ov-state"><a class="sidebar-ov-state-item sidebar-ov-state-item--posts" href="/archives/"><div class="sidebar-ov-state-item__count">19</div><div class="sidebar-ov-state-item__name">归档</div></a><a class="sidebar-ov-state-item sidebar-ov-state-item--categories" href="/categories/"><div class="sidebar-ov-state-item__count">5</div><div class="sidebar-ov-state-item__name">分类</div></a><a class="sidebar-ov-state-item sidebar-ov-state-item--tags" href="/tags/"><div class="sidebar-ov-state-item__count">17</div><div class="sidebar-ov-state-item__name">标签</div></a></div><div class="sidebar-ov-cc"><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" target="_blank" rel="noopener" data-popover="知识共享许可协议" data-popover-pos="up"><img src="/images/cc-by-nc-sa.svg"></a></div></section></aside></div><div class="clearfix"></div></div></main><footer class="footer" id="footer"><div class="footer-inner"><div><span>Copyright © 2024</span><span class="footer__icon"><i class="fas fa-heart"></i></span><span>Belly	|	vx：lin128Ve98</span></div></div></footer><div class="loading-bar" id="loading-bar"><div class="loading-bar__progress"></div></div><div class="back2top" id="back2top"><span class="back2top__icon"><i class="fas fa-rocket"></i></span></div></div><script src="https://cdn.jsdelivr.net/npm/jquery@v3.4.1/dist/jquery.min.js"></script><script src="https://cdn.jsdelivr.net/npm/velocity-animate@1.5.2/velocity.min.js"></script><script src="https://cdn.jsdelivr.net/npm/velocity-animate@1.5.2/velocity.ui.min.js"></script><script src="/js/utils.js?v=2.8.0"></script><script src="/js/stun-boot.js?v=2.8.0"></script><script src="/js/scroll.js?v=2.8.0"></script><script src="/js/header.js?v=2.8.0"></script><script src="/js/sidebar.js?v=2.8.0"></script></body></html>